5-数据仓库、Apache Hive

hadoop离线day05--数据仓库、Apache Hive

今日课程学习目标

理解数仓概念、起源由来
理解数仓(OLAP)与数据库(OLTP)区别
掌握数仓分层架构思想
掌握Apache Hive功能与架构组件
理解Apache Hive远程模式部署安装

今日课程内容大纲

#数据仓库基础核心知识
	1、数据仓库是什么 为何而来?
	   为了分析数据而来 数据分析的平台
	2、数据仓库的特性
    3、数据仓库和数据库的区别
    	OLTP系统
    	OLAP系统
    	注意:这里要解决一个核心的误区:数仓绝不是大型数据库。 这么理解就凉凉
    4、数据仓库的分层架构
        根据数据流入流出特点 进行分层
    5、ETL、ELT区别    
#大数据最著名的数仓软件--Apache Hive
	1、Hive是什么?
       基于Hadoop的数仓  如何理解和Hadoop关系?   SQL on Hadoop
       核心功能:
    	a、将结构化文件映射成为一张表(Table)
    	b、基于表提供了SQL分析能力 (Hive SQL HQL,类SQL)
       本质:用户HQL--->Hive转换MR--->数据分析	
    2、Hive的架构组件   
    3、Hive的安装部署
    	metadata metastore区别
    	三种部署模式 
    		课程使用远程模式部署安装
    	两代客户端使用
    	IDEA、PyCharm集成操作Hive
    4、Hive的初体验
       Hive的魅力是什么 

知识点01:数据仓库--概念定位、起源由来


知识点02:数据仓库--四大核心特征


知识点03:数据仓库--OLTP、OLAP区别

数据库和数据仓库的区别本质的区别就是OLTP 和OLAP系统的区别


知识点04:数据仓库--数仓分层架构(ODS、DW、DA)

![image-20210921205041974](/img/user/czc知识库/计算机/Hadoop技术栈/课程资料笔记/源/hadoop离线day05--数据仓库、Apache Hive/1、笔记、总结/hadoop离线day05--数据仓库、Apache Hive.assets/image-20210921205041974.png)


知识点05:数据仓库--案例:数仓建设实践

https://tech.meituan.com/2017/05/26/hotel-dw-layer-topic.html

![image-20210921205329860](/img/user/czc知识库/计算机/Hadoop技术栈/课程资料笔记/源/hadoop离线day05--数据仓库、Apache Hive/1、笔记、总结/hadoop离线day05--数据仓库、Apache Hive.assets/image-20210921205329860.png)


知识点06:数据仓库--ETL、ELT区别

理论规范在实际的应用中,一定要灵活变通。不同局限于文字表面。

![image-20210921205144228](/img/user/czc知识库/计算机/Hadoop技术栈/课程资料笔记/源/hadoop离线day05--数据仓库、Apache Hive/1、笔记、总结/hadoop离线day05--数据仓库、Apache Hive.assets/image-20210921205144228.png)

![image-20210921205152885](/img/user/czc知识库/计算机/Hadoop技术栈/课程资料笔记/源/hadoop离线day05--数据仓库、Apache Hive/1、笔记、总结/hadoop离线day05--数据仓库、Apache Hive.assets/image-20210921205152885.png)


知识点07:Apache Hive--概述、功能、与Hadoop关系


知识点08:Apache Hive--如何模拟实现Hive的实现

![image-20210921205520584](/img/user/czc知识库/计算机/Hadoop技术栈/课程资料笔记/源/hadoop离线day05--数据仓库、Apache Hive/1、笔记、总结/hadoop离线day05--数据仓库、Apache Hive.assets/image-20210921205520584.png)


知识点09:Apache Hive--架构、组件、与MySQL的差异

![image-20210921205532029](/img/user/czc知识库/计算机/Hadoop技术栈/课程资料笔记/源/hadoop离线day05--数据仓库、Apache Hive/1、笔记、总结/hadoop离线day05--数据仓库、Apache Hive.assets/image-20210921205532029.png)

9.1、Hive的架构组件

9.2、Hive和Mysql的区别


知识点10:Apache Hive--metadata、metastore

![image-20210921205729877](/img/user/czc知识库/计算机/Hadoop技术栈/课程资料笔记/源/hadoop离线day05--数据仓库、Apache Hive/1、笔记、总结/hadoop离线day05--数据仓库、Apache Hive.assets/image-20210921205729877.png)

#Metadata 元数据
对于hive来说,元数据主要指的是表和文件之间的映射关系。
元数据也是数据,存储在哪里呢?Hive当下支持两种地方存储元数据。
	1、存储在Hive内置的RDBSM中,Apache Derby(内存级别轻量级关系型数据库)  
	2、存储在外界第三方的RDBMS中,比如:MySQL。  企业中常用的方式。

#metastore 元数据访问服务
专门用于操作访问metadata的一种服务,对外暴露服务地址给各个不同的客户端使用访问Hive的元数据。
并且某种程度上保证了metadata的安全。

知识点11:Apache Hive--3种部署模式(推荐掌握远程模式)


知识点12:Apache Hive--远程模式安装部署--基础环境、与Hadoop整合

安装参考手册:

Python+大数据:hadoop离线阶段\05--数据仓库、Apache Hive\2、软件\hive 3.1.2\Hive3安装.md

启动hive之前,需要保证Hadoop启动且服务正常可用。想一下,什么叫做可用?

1、等待安全模式结束启动Hive

2、在Hadoop中设置用户代理,注意3台机器都需要修改,重启生效
 
vim etc/hadoop/core-site.xml
 
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

Linux课程阶段安装的MySQL即可。

主要考虑的就是MySQL Hive版本的兼容性 和jdbc驱动版本

在Centos7环境下如何安装MySQL


知识点13:Apache Hive--远程模式安装部署--配置文件与初始化

#apache-hive-3.1.2-bin.tar.gz

上传、解压
tar zxvf apache-hive-3.1.2-bin.tar.gz

cd /export/server/apache-hive-3.1.2-bin/conf
mv hive-env.sh.template hive-env.sh

vim hive-env.sh
export HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib


- 2、==hive-site.xml==

vim hive-site.xml

```xml
<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
</property>
<property>
	<name>javax.jdo.option.ConnectionDriverName</name>
	<value>com.mysql.jdbc.Driver</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionUserName</name>
	<value>root</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionPassword</name>
	<value>hadoop</value>
</property>

<!-- H2S运行绑定host -->
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>node1</value>
</property>

<!-- 远程模式部署metastore metastore地址 -->
<property>
  <name>hive.metastore.uris</name>
    <value>thrift://node1:9083</value>
</property>

<!-- 关闭元数据存储授权  --> 
<property>
  <name>hive.metastore.event.db.notification.api.auth</name>
    <value>false</value>
</property>
</configuration>


知识点14:Apache Hive--metastore服务启动、第一代客户端

metastore服务

Hive的客户端


知识点15:Apache Hive--HS2服务启动、beeline客户端使用


知识点16:Apache Hive--初体验--把hive当成MySQL的体验--慢


知识点17:Apache Hive--初体验--如何才能映射成功文件


今日作业

1、复习数仓基础理论知识
	什么是数仓?为何而来?
	数仓的特征  4大特征
	数仓和数据库的区别
	数仓的分层架构
		每一层名字功能
		分层的好处
2、Apache Hive
	Hive的本质:基于Hadoop的数仓 把结构化文件映射成为表  重点理解映射二字?
	因为映射不成功 表就没有数据 没有数据你sql分析个锤子
	Hive的架构组件
		hive到底做了什么?
		hadoop做了什么?
		mysql充当了什么?
			存储数据  存储的是文件数据 还是元数据?
	Hive的3种部署模式
    	metadata metastore
    	区别是什么
    Hive远程模式部署安装
    	bin/hive bin/beeline  metastore服务、HS2服务的启动(前台后台)
    体验Hive
 
 3、预习后面课程资料
  hive学习的重点就是Hive SQL语法。  DDL DML